package testes;

import static org.junit.Assert.*;



import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.quasar.copaPaises.businessLayer.*;

public class CartaoTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
		 CalendarDate.allInstances.clear();
		  Campeonato.allInstances.clear();
		  Cartao.allInstances.clear();
		  Cidade.allInstances.clear();
		  Clube.allInstances.clear();
		  Continente.allInstances.clear();
		  Equipa.allInstances.clear();
		  Estadio.allInstances.clear();
		  Golo.allInstances.clear();
		  Grupo.allInstances.clear();
		  Jogador.allInstances.clear();
		  Jogo.allInstances.clear();
		  Membro.allInstances.clear();
		  Pais.allInstances.clear();
		  Participacao.allInstances.clear();
		  Participante.allInstances().clear();
		  Treinador.allInstances.clear();
	}

	@After
	public void tearDown() throws Exception {
		 CalendarDate.allInstances.clear();
		  Campeonato.allInstances.clear();
		  Cartao.allInstances.clear();
		  Cidade.allInstances.clear();
		  Clube.allInstances.clear();
		  Continente.allInstances.clear();
		  Equipa.allInstances.clear();
		  Estadio.allInstances.clear();
		  Golo.allInstances.clear();
		  Grupo.allInstances.clear();
		  Jogador.allInstances.clear();
		  Jogo.allInstances.clear();
		  Membro.allInstances.clear();
		  Pais.allInstances.clear();
		  Participacao.allInstances.clear();
		  Participante.allInstances().clear();
		  Treinador.allInstances.clear();
	}

	@Test
	public final void testCartao() {
		Cartao c = new Cartao();
		assertNotNull(c);
	}

	@Test
	public final void testCartaoIntTipoCartaoMembro() {
		
		int minuto = 13;
		TipoCartao tipo = TipoCartao.Amarelo;
		Membro membro = new Membro();
		Cartao c = new Cartao(minuto, tipo, membro);
		
		assertNotNull(c);
		assertSame(c.minuto(),minuto);
		assertSame(c.membro(),membro);
		assertSame(c.tipo(),tipo);
	}

	@Test
	public final void testMinuto() {
		int minuto = 13;
		Cartao c = new Cartao(minuto, TipoCartao.Amarelo, new Membro());
		
		assertTrue(c.minuto() == 13);
		assertSame(c.minuto(), minuto);
	}
	
	@Test
	public final void testSetMinuto() {
		Cartao c = new Cartao();
		int minuto = 13;
		c.setMinuto(minuto);
		
		assertTrue(c.minuto() == 13);
		assertSame(c.minuto(), minuto);
	}

	@Test
	public final void testTipo() {
		
		TipoCartao tipo = TipoCartao.Amarelo;
		Cartao c = new Cartao(13,tipo, new Membro());

		assertTrue(c.tipo().equals(TipoCartao.Amarelo));
		assertSame(c.tipo(), tipo);
	}

	@Test
	public final void testSetTipo() {
		Cartao c = new Cartao();
		TipoCartao tipo = TipoCartao.Vermelho;
		c.setTipo(tipo);
		
		assertNotNull(c.tipo());
		assertSame(c.tipo(), tipo);
	}

	@Test
	public final void testMembro() {
		Membro membro = new Membro();
		Cartao c = new Cartao(13,TipoCartao.Amarelo,membro);
		assertEquals(c.membro(), membro);
	}

	@Test
	public final void testSetMembro() {
		Cartao c = new Cartao();
		Membro membro = new Membro();
		c.setMembro(membro);
		assertSame(c.membro(),membro);
	}

	@Test
	public final void testToString() {
		
		Cartao c = new Cartao (13,TipoCartao.Amarelo,new Membro());
		String toString = "Cartao [minuto=13, tipo=Amarelo, membro=Membro [minuto_entrada=0, minuto_saida=0, equipa=null, jogador=null]\n]\n";
		assertTrue(c.toString().equals(toString));
	}

}
